package com.hlf.modules.wechat.service;

import com.hlf.common.enums.WechatTemplateEnum;
import com.hlf.common.utils.wx.TemplateData;
import com.hlf.modules.base.service.BaseService;
import com.hlf.modules.wechat.model.OfficialAccount;
import com.hlf.modules.wechat.model.WechatMessage;

import java.util.Map;

/**
 * 公众号和开放平台服务层接口
 *
 * @author shuliangxing
 * @date 2017年4月19日 下午3:23:49
 */
public interface OfficialAccountService extends BaseService<OfficialAccount> {

    /**
     * 根据原始id查询
     *
     * @param originalId 微信原始id
     * @return
     * @author shuliangxing
     * @date 2017年4月19日 下午1:58:17
     */
    OfficialAccount selectByOriginalId(String originalId);

    /**
     * 通过用户Id和公众号类型查找openId
     *
     * @param userId
     * @param bizType
     * @return
     * @author zouwenjun
     * @date 2017年4月24日 上午11:38:20
     */
    String getOpenIdByUserIdAndBizType(Long userId, int bizType);

    /**
     * 通过用户Id给商家公众号用户推送消息
     *
     * @param message 推送消息
     * @author PanJialong
     * @date 2017年5月2日 上午10:12:07
     */
    void pushMessageToMerchantUser(WechatMessage message);

    /**
     * 通过用户Id给消费者公众号用户推送消息
     *
     * @param message 推送消息
     * @author PanJialong
     * @date 2017年5月2日 上午10:12:07
     */
    void pushMessageToCustomer(WechatMessage message);

    void pushTemplateMessageToMerchantUser(Long topAgentId, Long userId, Map<String, TemplateData> data, WechatTemplateEnum templateEnum);

    void pushTemplateMessageToPersonalUser(Long topAgentId, Long userId,
                                           Map<String, TemplateData> data, WechatTemplateEnum templateEnum);
}
